﻿@using Kendo.Mvc.UI
@using rosata.Providers.PromozioniProvider

<script type="text/javascript">
    function onError(e, status) {
        if (e.errors) {
            var message = "Error:\n";
            $.each(e.errors, function (key, value) {
                if (value.errors) {
                    message += value.errors.join("\n");
                }
            });
            this.cancelChanges();
            alert(message);
        }
    }
</script>

<script src="@Url.Content("~/Scripts/kendo/cultures/kendo.culture.it-IT.min.js")" type="text/javascript"></script>
<script type="text/javascript">
    //settiamo la cultura per il lingguaggio della tabella
    kendo.culture("it-IT");
</script>

<script type="text/javascript">
    //refresh della griglia
    function RefreshGrid(e) {
        $('#grid').data('kendoGrid').dataSource.read();
    }
</script>

@(Html.Kendo().Grid<PromozioneDto>()
        .Name("grid")
        .Columns(columns =>
        {
            columns.Bound(c => c.Id).Width(10);
            columns.Bound(c => c.DataInizio).Width(27).Format("{0:dd/MM/yyyy}");
            columns.Bound(c => c.DataFine).Width(25).Format("{0:dd/MM/yyyy}");
            columns.Bound(c => c.TestoDescrittivo).Width(50);
            columns.Bound(c => c.TitoloPromozione).Width(50).Title("Titolo");
            columns.Bound(p => p.NomeImmaginePiccola).ClientTemplate(
                "<img height=\"40px\" src='" + Url.Content("~/Public/promozioni/") + "#=Id#" + "/" + "#=NomeImmaginePiccola#' />").Width(40).Title("immagine");
            columns.Bound(p => p.NomeImmagineHeaderSito).ClientTemplate(
                "<img height=\"40px\" src='" + Url.Content("~/Public/promozioni/") + "#=Id#" + "/" + "#=NomeImmagineHeaderSito#' />").Width(40).Title("immagine testata");
            columns.Bound(p => p.NomeDocumento).ClientTemplate(
                "<img height=\"40px\" src='" + Url.Content("~/Public/promozioni/") + "#=Id#" + "/" + "#=NomeDocumento#' />").Width(40).Title("documento");
            columns.Command(command => command.Edit()).Width(25);
            columns.Command(command => command.Destroy()).Width(25); 
        })
        .Filterable(filterable => filterable
        .Extra(false)
            .Operators(operators => operators
            .ForString(str => str.Clear()
                .Contains("contiene")
                .StartsWith("Inizia con")
                .IsEqualTo("Inizia con")
                .IsNotEqualTo("Diverso da"))))
        .Events(e =>
        {
            //mi servono per fare il refresh della  
            //griglia una volta che ho chiuso la popup
            e.Cancel("RefreshGrid");
            e.Save("RefreshGrid");
        })
        .Editable(ed => ed.Mode(GridEditMode.PopUp)
                    .TemplateName("PromozioneEdit")
                    .Window(w => w.Width(700))
                    .DisplayDeleteConfirmation(true))
        .HtmlAttributes(new { style = "height: 480px;" })
        .Scrollable()
        .Groupable()
        .Sortable()
        .Pageable(pageable => pageable
            .Refresh(true)
            .PageSizes(true)
            .ButtonCount(5))
        .DataSource(dataSource => dataSource
                                    .Ajax()
                                    .Events(events =>
                                    {
                                        events.Error("onError");
                                    })
                                    .Model(model =>
                                    {
                                        model.Id(m => m.Id);
                                        model.Field(p => p.Id).Editable(false);
                                    })
                                    .Update(update => update.Action("Edit", "PromozioniAdmin"))
                                    .Destroy(destroy => destroy.Action("Delete", "PromozioniAdmin"))
                                    .Read("GetPromozioni", "PromozioniAdmin")))